草庐IT

C++ 类 class

全部标签

c++ - 具有 C++ 数据结构的 C 代码

我知道这不是开发项目的好方法,但由于我工作的某些原因,我致力于在C项目中集成C++中的一些数据结构(LRU缓存和HashMap)。到目前为止,我知道有一些方法可以使用extern"C"在C++中调用C函数,但是从C调用C++对象(方法...)呢?我正在使用GCC。 最佳答案 如果所有代码都是用C++编译器编译的,应该没有(或很少)问题。如果您使用gcc编译C并使用g++编译C++,那么您需要围绕您的类编写header包装器,以通过一组函数使C++代码可见。例子:我的类.h#ifdef__cplusplusclassMyClass{p

c++ - C 到 C++ : Transitioning from one language to the other

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:C++tutorialforexperiencedCprogrammer.我经常使用多种语言进行编程,最近一直在使用C++。基本上我的类只是对纯C代码的包装。几乎就像一个带有关联方法的结构。这为我的数据提供了我想要的封装和隐私。我有一个小的类层次结构,几乎没有使用继承。我熟悉面向对象的概念,并且知道当我需要了解这方面的特定概念时可以使用哪些搜索词。然而,正如我在编程世界中的尝试所发现的那样,通常真正有用的语言特性对新手或新手来说是隐藏的,而我需要的有用的部分已经写好了并且在某个地方的库中可以免费使用可用(大多

c++ - 错误 : redefinition of class

这是我的代码://inmain.cpp#include"iostream"#include"circle.cpp"#include"rectangle.cpp"#include"shape.cpp"usingnamespacestd;intmain(){Shapeshapes[10];for(inti=0;iwidth=width;}virtualvoidsetHeigth(intheight){this->height=height;}};//inshape.cppclassShape{public:virtualintgetArea()const=0;};编译时,我得到这个错误:e

c++ - 为我的类(class)重载流运算符 << >> 的正确方法是什么?

我对如何在C++中为我的类重载流运算符感到有点困惑,因为它们似乎是流类上的函数,而不是我的类上的函数。这样做的正常方法是什么?目前,对于“getfrom”运算符,我有一个定义istream&operator>>(istream&is,Thing&thing){//etc...哪个有效。Thing类的定义中没有提到它。我希望它能够在其实现中访问我的Thing类的成员-我该怎么做? 最佳答案 您的实现没有问题。您需要执行的唯一额外步骤是在Thing中将您的运算符(operator)声明为friend:classThing{public:

c++ - 为什么 C+ +'s <vector> templated class doesn' t 打破了一个定义规则?

也许这是一个蹩脚的问题,但我不明白!如果我包括或在多个翻译单元(不同的.cpp)中,为什么它不破坏ODR?据我所知,每个.cpp的编译方式都不同,因此将为每个目标文件分别生成vector的方法代码,对吧?所以链接器应该检测到它并提示。即使它不会(我怀疑这是模板的特殊情况),当我将所有链接在一起时,它会在每个单元中使用一个代码还是不同的克隆代码集??? 最佳答案 同样,任何模板定义都不会破坏ODR—ODR特别指出,模板定义可以在翻译单元之间重复,只要它们确实是重复的(并且,因为它们是重复,不可能有冲突或歧义)。[C++14:3.2/6

C++ 风格约定 : Parameter Names within Class Declaration

我是一个相当新的C++程序员,我想听听支持和反对在类声明中命名参数的争论。这是一个例子:Student.h#ifndefSTUDENT_H_#defineSTUDENT_H_#includeusingnamespacestd;classStudent{private:stringname;unsignedintage;floatheight,GPA;public:Student(string,unsignedint,float,float);voidsetAge(unsignedint);};#endif/*STUDENT_H_*/对比#ifndefSTUDENT_H_#defineS

c++ - 在哪里了解 “bit”?

Closed.ThisquestiondoesnotmeetStackOverflowguidelines。它当前不接受答案。想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。上个月关闭。Improvethisquestion我试图找到一些有关位的详细书籍或资源,以便例如将数字(如16)转换为位。我目前是一名高中生,每当阅读编程书籍时,我几乎都能理解所有内容,除了按位运算符部分。我只是不知道它是如何工作的,为什么人们甚至发明bit&byte:(。因此,我希望你们能给我一些资源建议,讨论如何将数字/字符转换为位。 最佳答案

c# - C、C++、Java、C# 中的 main()

在C、C++、Java或C#中,main()(或Main())是用户定义函数还是内置函数? 最佳答案 它是程序执行所必需的用户定义函数。当你用编译语言运行你的程序时,main函数被执行。例如,在Java中,如果你在一个类中有一个签名函数publicstaticvoidmain(String...args)那么这个类就可以被执行,因为JVM将执行main方法。Java示例:publicclassTest{publicstaticvoidmain(String...args){System.out.println("HelloWorld

c++ - 在游戏编程中,导致性能消耗的特定 C++ 或 STL 功能是什么?

很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭12年前。我的问题主要是关于STL而不是C++的其余部分,可以比较(我猜)与C一样快,只要类不是在每个角落都使用。STL是游戏和OGRE3D等引擎的标准,但我想知道如果STL的功能很好用,问题是虽然我真的不知道它们是如何工作的,但我应该首先知道哪些功能会导致严重的问题在使用它们之前先检查pig。我很高兴开始那所游戏编程学校,显然我不可能不使用这些高级功能。

c++ - C和C++中寄存器变量的地址

我知道寄存器变量的概念及其用例,但根据我的尝试,我脑子里几乎没有问题。我不能访问C中寄存器变量的地址,尽管我可以使用C++!为什么?访问寄存器变量的寻址有什么问题吗?假设如果我在C++中将一个字符串变量声明为寄存器,那么该变量将存储在哪里?C++中'string'等非数字数据类型的存储类声明为register有什么意义?更新:我认为C++允许我们获取寄存器变量的地址,因为我的程序中没有出现任何错误,如下所示:#include#includeusingnamespacestd;clock_tbeg,en;intmain(){intj,k=0;beg=clock();for(registe